<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h2>props的校验</h2>
      <child
        name="pengshao"
        :age="25"
        :sex="1"
        height="180"
        :money="80000"
      ></child>
    </div>

    <script src="./Vue3.js"></script>
    <script>
      const { createApp } = Vue;

      /*
        String
        Number
        Boolean
        Array
        Object
        Date
        Function
        Symbol
      */

      const Child = {
        props: {
          // 最简单的类型校验
          name: String,

          // 数组的方式是表示或
          age: [Number, String],

          // 必填属性
          sex: {
            type: Number,
            required: true,
          },

          // 属性默认值
          height: {
            type: String,
            default: "200",
          },

          // 自定义类型校验函数
          money: {
            // value表示传进来的值
            // 需要返回true或者false，来表示传进来的值是否符合规范
            validator(value) {
              if (value < 20000) {
                return false;
              } else {
                return true;
              }
            },
          },
        },
        template: `
          <div>child组件 = {{ name }} = {{ age }} = {{ sex }} = {{ height }}</div>
        `,
      };

      createApp({
        data() {
          return {};
        },
        components: {
          Child,
        },
      }).mount("#app");
    </script>
  </body>
</html>
